package DAO;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import to.Amostra;
import to.DeterminacaoPreco;
import util.HibernateUtil;

public class DeterminacaoPrecoDAO {

	public List<DeterminacaoPreco> buscarPrecoDetermincao(Integer determinacao)
			throws Exception {

		List<DeterminacaoPreco> lista = null;

		try {

			Session session = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = session.createCriteria(Amostra.class);
			criteria.createAlias("determinacao", "d");
			criteria.add(Restrictions.eq("d.codigo", determinacao));
			criteria.addOrder(Order.asc("p.nome"));
			lista = (List<DeterminacaoPreco>) criteria.list();

		} catch (Exception e) {
			e.printStackTrace();
		}

		return lista;
	}
	
	public List<DeterminacaoPreco> buscarTodos(){
		ArrayList<DeterminacaoPreco> listaRetorno = null;
		try {
			Session session = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = session.createCriteria(DeterminacaoPreco.class,"detPreco")
					.createAlias("detPreco.determinacao", "det");
			criteria.addOrder(Order.asc("det.descricao"));
			listaRetorno = (ArrayList<DeterminacaoPreco>) criteria.list();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return listaRetorno;
	}

	public List<DeterminacaoPreco> buscarDetermincaoPreto(Integer idDeterminacao, Integer idCliente)
			throws Exception {

		List<DeterminacaoPreco> lista = null;
		
		try {
			Session session = HibernateUtil.getSessionFactory().openSession();
			
			Criteria criteria = session.createCriteria(DeterminacaoPreco.class);
			criteria.createAlias("determinacao", "d");
			criteria.createAlias("tipocliente", "tc");
			
			criteria.add(Restrictions.eq("d.codigo", idDeterminacao));
			criteria.add(Restrictions.eq("tc.codigo", idCliente));
			
			criteria.addOrder(Order.asc("d.descricao"));
			lista = (List<DeterminacaoPreco>) criteria.list();

		} catch (Exception e) {
			e.printStackTrace();
		}

		return lista;
	}

}
